var mongodb = require('./db');
var ObjectId = require('mongodb').ObjectID;

module.exports = Base;

//读取collection下的所有数据
Base.getAll(function (coll, callback) {
	//打开数据库
	mongodb.open(function (err, db) {
		if (err) {
			return callback(err);
		}
		//读取 posts 集合
		db.collection(coll, function (err, collection) {
			if (err) {
				mongodb.close();
				return callback(err);
			}
			var query = {};
			//根据 query 对象查询文章
			collection.find(query).sort({
				time: -1
			}).toArray(function (err, docs) {
					mongodb.close();
					if (err) {
						callback(err);//失败！返回 err
					}
					//解析 markdown 为 html
					docs.forEach(function (doc) {
						doc.post = markdown.toHTML(doc.post);
					});
					callback(null, docs);//成功！以数组形式返回查询的结果
				});
		});
	});
});

Base.getBy_id(function (coll, _id, callback) {
	//打开数据库
	mongodb.open(function (err, db) {
		if (err) {
			return callback(err);
		}
		//读取 posts 集合
		db.collection(coll, function (err, collection) {
			if (err) {
				mongodb.close();
				return callback(err);
			}
			//根据_id进行查询
			collection.findOne({
				"_id": new ObjectId(_id),
			}, function (err, doc) {
				mongodb.close();
				if (err) {
					return callback(err);
				}
				callback(null, doc);//返回查询的一条数据
			});
		});
	});
});

Base.deleteBy_id(function (coll, _id, callback) {
	//打开数据库
	mongodb.open(function (err, db) {
		if (err) {
			return callback(err);
		}
		//读取 posts 集合
		db.collection(coll, function (err, collection) {
			if (err) {
				mongodb.close();
				return callback(err);
			}
			//根据_id进行查询
			collection.findOne({
				"_id": new ObjectId(_id),
			}, function (err, doc) {
				mongodb.close();
				if (err) {
					return callback(err);
				}
				callback(null, doc);//返回查询的一条数据
			});
		});
	});
});